package com.lecture.springlecture.event.java;

public class TestTaskFinishListener {

    public static void main(String[] args) {
        //------------- 1、事件源和事件
        //事件源
        Task source = new Task("用户统计", TaskFinishStatus.SUCCEED);

        //任务结束事件(即事件源会发生某事件)
        TaskFinishEvent event = new TaskFinishEvent(source);

        //------------- 2、监听器
        //邮件服务监听器
        MailTaskFinishListener mailListener = new MailTaskFinishListener("harvey@163.com");

        //------------- 3、事件发布器、注册监听器、发布事件
        //事件发布器(用来发布事件)
        TaskFinishEventPublisher publisher = new TaskFinishEventPublisher();

        //注册邮件服务监听器
        publisher.register(mailListener);

        //发布事件(由于有前一步的注册服务监听器，所以发布事件其实就是间接的是调用监听器的方法)
        publisher.publishEvent(event);
    }
}